<?php

class Application_Model_DbTable_CategoriasDespesas extends Zend_Db_Table_Abstract{
    protected $_name = 'categoriasDespesas';
    
    protected $_dependentTables = array('Application_Model_DbTable_Despesas');
    protected $_referenceMap = array(
    	'Usuarios' => array(
    		'columns' => 'usuarios_id',
    		'refTableClass' => 'Application_Model_DbTable_Usuarios',
    		'refColumns' => 'id'
    	),
    	'CategoriasDespesas' => array(
    		'columns' => 'parent',
    		'refTableClass' => 'Application_Model_DbTable_CategoriasDespesas',
    		'refColumns' => 'id'
    	)
   	); 	
    
    public function getCategoria($id){
    	$id = (int)$id;
    	$row = $this->fetchRow("id = " . $id);
    	if(!$row){
    		throw new Exception("Não foi possível encontrar a categoria desejada");
    	}
    	
    	return $row;
    }
    
    public function addCategoria($usuarioId, $descricao, $parent = null){
    	$data = array(
    		'usuarios_id' => $usuarioId,
    		'descricao' => $descricao,
    		'parent' 	=> $parent
    	);
    	
    	$this->insert($data);
    }
    
    public function updateCategoria($id, $descricao, $parent){
    	$data = array(
    		'descricao' => $descricao,
    		'parent'	=> $parent,
    	);
    	
    	$this->update($data, 'id = ' . (int)$id);
    }
    
    public function deleteCategoria($id){
    	$this->delete('id = ' . (int)$id);
    }
    
    public function hasChildren(){
    	if(count($this->findDependentRowset("Application_Model_DbTable_CategoriasDespesas")) > 0){
    		return true;
    	}
    	
    	return false;
    }
}